perm filename ATSIGN.MRC[UP,DOC] blob
sn#239464 filedate 1976-10-03 generic text, type T, neo UTF8
THE SIMPLE CASES: ["<" AND ">" ARE METALINGUISTIC]
TYPE :@ <FILE NAME>/X
TO LIST YOUR MIDAS PROGRAM FOR THE XGP.
TYPE :@ <FILE NAME>/C/X
TO GET A LISTING PLUS CREF.
OTHER EXAMPLES ARE AT THE END OF THIS FILE.
@ HAS MANY WINNING FEATURES:
* IT PAGINATES THE LISTING AND NUMBERS
THE LINES, PRINTS TITLE PAGES, LEFT-MARGIN CROSS-
REFERENCES, AND SYMBOL TABLES.
* @ CAN HANDLE MULTIPLE-FILE LISTINGS; IN THIS CASE,
CROSS-REFERENCES WILL INCLUDE THE FILE NAME IF
DIFFERENT FROM THE CURRENT ONE.
* @ WILL PARSE MIDAS .INSRT'S, AND ADD THE FILES
SO FOUND TO THE LIST OF FILES TO SCAN FOR SYMBOL
DEFINITIONS. A SWITCH CONTROLS WHETHER OR NOT
SUCH FILES SHOULD ALSO THEMSELVES BE LISTED.
* @ CAN PRODUCE "LISTING RECORD" (LREC) FILES WHILE IT
LISTS THE TEXT; WHEN THE TEXT IS SUBSEQUENTLY
EDITED AND RE-LISTED, THE LREC FILE FOR THE
PREVIOUS VERSION MAY BE SPECIFIED AS INPUT TO @,
WHICH WILL THEN PRODUCE A COMPARISON LISTING:
ONLY THOSE PAGES ON WHICH THE TEXT HAS BEEN
ALTERED ARE PRINTED. THUS ONE CAN XGP A FILE
AND KEEP IT IN A LOOSELEAF BINDER, AND SUBSEQUENTLY
PRINT AND UPDATE ONLY THOSE PAGES WHICH HAVE CHANGED.
* @ CAN PRODUCE A CREF-TYPE LISTING, SHOWING ALL
PLACES WHERE SYMBOLS SEEN WERE DEFINED AND
REFERENCED. AGAIN, IN THE CASE OF MULTIPLE-FILE
LISTINGS THE FILES INVOLVED ARE INDICATED.
THE @-CREF ALSO INDICATES THE TYPE OF DEFINITION
OR REFERENCE MORE SPECIFICALLY THAN CREF DOES.
NOTE THAT @ PRODUCES A TEXTUAL CREF RATHER THAN
AN ASSEMBLY CREF; IT WILL NOT SEE GENERATED
SYMBOLS OR THOSE DEFINED BY MACROS, BUT WILL
CATCH ALL EXPLICIT TEXTUAL DEFINITIONS AND
REFERENCES REGARDLESS OF ASSEMBLY CONDITIONALS.
@ WILL PUT THIS CREF IN A SEPARATE OUTPUT FILE
(THE "AUXILIARY OUTPUT FILE") IF DESIRED.
* @ KNOWS ABOUT THE XGP; IT QUEUES THE OUTPUT FILES
FOR PRINTING AUTOMATICALLY, AND IT IS CLEVER IN MINOR
DETAILS SUCH AS PRINTING ONE TITLE PAGE INSTEAD OF
TWO, AND FURTHERMORE WILL PRODUCE OUTPUT IN MORE
THAN ONE FONT IF DESIRED.
ALSO, @ WILL OPTIONALLY REMEMBER WHICH FONT(S) THE
LISTING SHOULD BE PRINTED IN, AND WHAT ;VSP SETTING TO
USE. @ WILL OUTPUT APPROPRIATE INSTRUCTIONS TO CAUSE
THOSE THINGS TO BE DONE, AND AUTOMATICALLY DEFAULT
THE PAGE LENGTH AND WIDTH TO THE RIGHT VALUE
FOR THE FONTS AND VSP USED. SEE "F" AND "V" SWITCHES.
* @ UNDERSTANDS LISP CODE TO SOME EXTENT, AND CAN
PRODUCE LISTINGS WITH SYMBOL TABLES OF FUNCTION
DEFINITIONS, ETC.
PRESENTLY @ KNOWS ABOUT THE SYNTAX OF MIDAS, MACRO-10, FAIL, PALX11,
AND LISP. @ CAN ALSO HANDLE FILES OF HUMAN-READABLE TEXT BY
CONSIDERING THEM TO BE IN THE LANGUAGE "RANDOM". A SPECIAL LANGUAGE,
"TEXT", EXISTS FOR TEXT-JUSTIFIER OUTPUT (WITH SUCH FILES,
IF LISTING ON THE XGP, THE /& SWITCH SHOULD BE USED AS WELL).
THE "/L" SWITCH IS USED TO TELL @ WHAT LANGUAGE THE FILES BEING LISTED
ARE WRITTEN IN.
@ REQUIRES A LINE OF JCL SPECIFYING WHAT FILES TO LIST;
IF THAT IS NOT SUPPLIED, @ WILL READ A LINE FROM THE TTY.
THE INPUT CONSISTS OF FILE SPECS SEPARATED BY COMMAS.
THE LREC FILE TO BE READ OR WRITTEN MUST BE SPECIFIED,
AND SO MUST THE FILES TO BE LISTED (OR JUST SCANNED FOR
SYMBOL DEFINITIONS), UNLESS @ WILL KNOW ABOUT THEM IN SOME
OTHER WAY (FROM THE LREC FILE, OR FROM .INSRT'S).
SWITCHES GO INSIDE THE FILE SPECS. SOME SWITCHES ARE GLOBAL
IN EFFECT, AND IT DOES NOT MATTER WHICH FILESPEC THEY GO IN.
OTHER SWITCHES ARE "PER-FILE". SOME OF THEM ARE STICKY, AND
AFFECT THE FILE IN WHOSE SPEC THEY GO AND ALL FOLLOWING FILES,
UNTIL COUNTERMANDED.
SOMEWHAT LIKE A SWITCH IS THE SINGLE-QUOTE ('). WITH A
DATA (NON-LREC) FILE, ONE SINGLE-QUOTE INDICATES THAT THE
FILE SHOULD NOT BE LISTED, JUST SCANNED FOR SYMBOL DEFINITIONS
(TO WHICH CROSS-REFERENCES MAY APPEAR IN FILES THAT ARE LISTED).
TWO SINGLE-QUOTES PREVENTS THE FILE FROM BEING PROCESSED AT ALL.
THIS IS WHAT TO DO WHEN A PROGRAM .INSRT'S A FILE WHICH YOU
DO NOT WANT SCANNED (OR WHICH DOES NOT EXIST).
LREC FILE SPECS ARE DISTINGUISHED BY THE PRESENCE OF A /@ OR
A /G SWITCH. AN LREC FILE MAY BE SPECIFIED TO BE READ, WRITTEN,
OR READ AND REWRITTEN.
WHEN MAKING A LISTING FOR THE FIRST TIME, THERE IS NO EXISTING
LREC FILE, SO ONE SHOULD JUST BE WRITTEN. THIS IS SPECIFIED WITH
A BACKARROW AND A SINGLE-QUOTE: <FILE>←'/G. IN ADDITION, IT IS
NECESSARY TO SPECIFY THE NAMES OF THE FILES TO BE LISTED, SINCE
THERE IS NO LREC FILE TO GET THEM FROM.
WHEN MAKING AN UPDATE LISTING, ONE MUST ALREADY HAVE AN LREC FILE
CORRESPONDING TO THE LISTING TO BE UPDATED. THE BEST WAY TO HAVE
ONE IS TO HAVE WRITTEN ONE AT THAT TIME AND SAVED IT, BUT IF YOU
LOST YOU CAN REGENERATE THE LISTING YOU HAVE, MAKING AN LREC FILE,
AND JUST NOT PRINT IT AGAIN. TO MAKE THE UPDATE LISTING, SPECIFY
THE NAME OF THE LREC FILE WITH THE /G SWITCH: <FILE>/G.
ALL PER-FILE AND GLOBAL SWITCH SETTINGS REMEMBERED IN THE LREC
FILE WILL BE USED, UNLESS EXPLICITLY OVERRIDDEN (SOME SWITCHES
ARE NOT REMEMBERED, FOR SPECIFIC REASONS).
IT IS NOT NECESSARY TO SPECIFY ANY OF THE FILES TO BE LISTED,
UNLESS THEY ARE NEW, OR YOU WISH TO CHANGE THEIR PER-FILE SWITCH
SETTINGS. NORMALLY, THE NEW LREC FILE IS CALLED "LREC" AND THE
OLD ONE BEING REPLACED IS RENAMED TO "OLREC", BUT OFTEN ONE WISHES
THE THE LREC FILES TO HAVE VERSION NUMBERS THAT "TRACK" WITH
THE VERSION NUMBER OF (ONE OF) THE FILE(S) BEING LISTED. FOR
EXAMPLE, THE LREC FILE FOR SYSENG;TECO 475 IS SYSLRC;TECO 475.
TO REQUEST THIS, USE THE /M SWITCH WITH THE FILE WHOSE VERSION
NUMBER IS TO BE FOLLOWED.
AT TIMES ONE WISHES TO MAKE AN "EXPERIMENTAL" LISTING, WITHOUT
REPLACING THE OLD LREC FILE. TO DO THIS, MAKE IT "INPUT-ONLY"
WITH A SINGLE-QUOTE: <FILE>'/G.
AN LREC FILE CONTAINS FILE NAMES, COMPARISON INFORMATION (CHECKSUMS
OF THE PAGES OF THE LAST VERSION), AND SWITCH INFORMATION. @ USES
THE FILE NAMES AND SWITCH INFORMATION TO SAVE THE USER'S TYPING,
AND THE COMPARISON INFORMATION TO AVOID UNNECESSARY OUTPUT. YOU
CAN INHIBIT EITHER FUNCTION: YOU CAN MAKE A NEW COMPLETE LISTING
WITH THE REMEMBERED SWITCHES, OR YOU CAN RESPECIFY ALL THE FILE
NAMES AND SWITCHES, BUT PERFORMING THE COMPARISON PROCESS FOR ANY
FILE FOR WHICH THERE IS INFORMATION. TO MAKE A NEW FULL LISTING,
SPECIFY /-G INSTEAD OF /G (THE PER-FILE /J SWITCH CAN ALSO BE
USED, TO RE-LIST COMPLETELY ONLY SOME OF THE FILES). TO SUPPRESS
THE REMEMBERED SWITCHES AND FILENAMES, USE /@ INSTEAD OF /G.
TO SUPPRESS BOTH ... JUST DON'T MENTION THE LREC FILE.
OUTPUT FILES:
NORMALLY, A SEPARATE OUTPUT FILE IS WRITTEN FOR EACH DATA FILE,
ONTO THE USER'S WORKING DIRECTORY (ON ITS, FOR NON-XGP LISTINGS,
ONTO TPL:). ITS FIRST FILE NAME IS THE SAME AS THE DATA FILE'S.
ANY OUTPUT NOT ASSOCIATED WITH A SINGLE FILE (UNIVERSAL SYMBOL
TABLES, OR CREF TABLES) GOES AT THE END OF ONE OF THOSE OUTPUT
FILES (NAMELY, THE LAST ONE WRITTEN).
YOU DO HAVE SOME CONTROL, HOWEVER. THE OUTPUT FILES CAN BE FORCED
ONTO A DIFFERENT DEVICE OR DIRECTORY WITH THE /O[<DEFAULTS>] SWITCH.
YOU CAN CAUSE ALL THE LISTINGS TO GO IN A SINGLE FILE, RATHER THAN
ONE FOR EACH DATA FILE, WITH THE /S SWITCH, AND THEN YOU CAN USE
THE /O SWITCH TO SPECIFY ITS NAME COMPLETELY.
IN ADDITION, YOU CAN MAKE THE NON-FILE-ASSOCIATED OUTPUT GO IN
A SEPARATE FILE, CALLED THE AUXILIARY OUTPUT FILE, AND SPECIFY
ITS NAME, WITH THE /C[<FILE>] OR /U[<FILE>] SWITCHES. ANY NAMES
SPECIFIED IN THE /O, /C OR /U SWITCHES ARE REMEMBERED FOR FUTURE
LISTINGS; NAMES NOT SPECIFIED ARE DEFAULTED ANEW EACH TIME, AND
NOT NECESSARILY ALWAYS THE SAME WAY. THUS, IF YOU DO NOT SPECIFY A
DIRECTORY NAME, THE OUTPUT FILES WILL, EACH LISTING, GO ON THE
CURRENT WORKING DIRECTORY OF THE USER MAKING THE LISTING.
AS FOR FILENAME DEFAULTING, ALL THE FIRST FILE NAMES DEFAULT
TOGETHER STICKILY. EACH SECOND FILE NAME DEFAULTS FOR EACH
FILE SEPARATELY, ACCORDING TO THE FILE'S USE. DEVICE NAMES
AND DIRECTORY NAMES DEFAULT STICKILY DATA FILES, STARTING OUT
AS "DSK:" AND THE USER'S WORKING DIRECTORY; HOWEVER, THE
LREC FILE IS UNAFFECTED BY THE STICKINESS. IT DEFAULTS TO
THOSE SAME THINGS EVEN IF OTHER DEVICES OR DIRECTORIES HAVE
ALREADY BEEN SPECIFIED FOR DATA FILES.
THE DEFAULT SECOND NAME FOR LREC FILES IS "LREC" ("LRC" ON
TOPS-10) AND "OLREC" ("OLR" ON TOPS-10). FOR DATA FILES, THE
DEFAULT ON ITS IS ">"; ON TOPS-10, IT IS THE APPROPRIATE
EXTENSION FOR THE LANGUAGE THE FILE IS IN (AS SPECIFIED BY THE
/L SWITCH). FOR OUTPUT FILES, THE DEFAULT ON ITS IS "@" FOR
NON-XGP OUTPUT, "@XGP" FOR XGP OUTPUT, AND "@CREF" FOR
AUXILIARY OUTPUT FILES (SEE /C AND /U). ON TOPS-10, THE DEFAULTS
ARE "LST", "XGP" AND "ATC", RESPECTIVELY.
IF AN INPUT FILE CONTAINS SUBTITLES (.SBTTL OR .STITL IN PDP11
CODE; SUBTTL IN PDP10 CODE; (COMMENT ... ) IN LISP)
@ RESERVES THE FIRST LINE OF EACH PAGE FOR THE CURRENT SUBTITLE,
AND STARTS THE TEXT ON THE SECOND LINE. IF YOU WOULD LIKE TO
PREVENT @ FROM EVER TRYING TO PUT TEXT ON THE FIRST LINE OF
A PHYSICAL PAGE, JUST PUT A (POSSIBLY NULL) SUBTITLE IN THE FILE.
IF A FILE HAS A TVEDIT DIRECTORY, @ WILL NEVER TRY TO PUT TEXT
ON THE FIRST LINE OF THE PAGE, ASSUMING THAT IT WON'T FIT ANYWAY.
ASSEMBLER LANGUAGE FILES CONTAINING THE PSEUDO .AUXIL ARE
REGARDED AS FILES OF AUXILIARY SYMBOL DEFINITIONS. SYMBOLS
WHICH APPEAR ONLY IN INPUT-ONLY AUXILIARY FILES WILL NOT BE
CREFFED. THUS, IF YOU .INSRT SYSENG;TTY DEFS AND REFER ONLY
TO THE SYMBOL %TOERS, IT WILL APPEAR IN THE CREF (BOTH USE
AND DEFINITION) BUT THE DOZENS OF OTHER SYMBOLS DEFINED IN
SYSENG;TTY DEFS WILL NOT. HOWEVER, IF TTY DEFS WERE LISTED,
ALL THE SYMBOLS WOULD APPEAR.
SWITCHES ARE SINGLE CHARACTERS, POSSIBLY PRECEDED BY DECIMAL
NUMBERS. USE - FOR NEGATIVE NUMBERS; -X = -1X. FOR TWO-STATE
SWITCHES, IF X TURNS IT ON -X WILL TURN IT OFF.
SOME SWITCHES ALSO TAKE TRAILING ARGUMENTS ENCLOSED IN [];
THE MEANING OF SUCH AN ARGUMENT IS DESCRIBED BELOW FOR EACH
INDIVIDUAL SWITCH WHICH CAN TAKE SUCH AN ARGUMENT.
ONE MAY ENCLOSE SEVERAL SWITCHES IN PARENTHESES, OR PRECEDE
SINGLE SWITCHES WITH /. THUS VALID SWITCH SPECIFICATIONS
WOULD BE (S C-U) OR /S/C/-U OR (SC)/-U
OR (L[LISP]54W) OR /L[LISP](54W120V)/F[20FG]
OR WHATEVER. SPACES OR COMMAS BETWEEN SWITCHES IN
PARENTHESES ARE IGNORED. NOTE THAT IF THE /G SWITCH
IS USED, THE DEFAULT VALUES OF ALL SWITCHES ARE THOSE
REMEMBERED IN THE INPUT LREC FILE, RATHER THAN THE VALUES
STATED BELOW.
CURRENTLY IMPLEMENTED SWITCHES ARE DESCRIBED BELOW
(* INDICATES A PER-FILE SWITCH; ALL OTHERS
ARE GLOBAL SWITCHES; DEFAULT IS OFF (-X) UNLESS OTHERWISE
STATED):
# INHIBITS THE PRINTING OF ANYTHING AT ALL
IN THE LEFT MARGIN, EVEN THE LINE NUMBERS.
* $ INHIBITS PRINTING THE SYMBOL TABLE AT
THE END OF THE FILE. IN THE COMMAND
STRING, THE DEFAULT FOR THIS SWITCH IS
INITIALLY OFF, AND EACH TIME IT IS
MENTIONED IT IS USED NOT ONLY FOR THAT FILE
BUT FOR THE DEFAULT FOR THE REST.
NOTE: FOR FILES GOBBLED BY /G,
THE SWITCH IS ALWAYS SET AS REMEMBERED IN THE
/G'D LREC FILE. TO OVERRIDE, SPECIFY THE
FILE EXPLICITLY.
FOR .INSRT'ED FILES THAT WERE NOT MENTIONED BY
AN LREC FILE, THE /$ SWITCH DEFAULT IS
THE WAY THE SWITCH WAS SET AT THE END OF READING
THE COMMAND STRING.
% THE HEADINGS AT THE TOP OF EACH PAGE, WHICH NORMALLY
CONTAIN THE FILE NAME AND PAGE NUMBER,
SHOULD ALSO CONTAIN THE DATE PRINTED.
THIS FLAG NOW DEFAULTS ON.
* & SUPPRESS THE TITLE PAGE AT THE FRONT OF THE LISTING,
AND ALSO THE LISTS OF PRINTED AND DELETED PAGES AND
THE PAGE MAP.
? THE INPUT IS RANDOM TEXT; IT IS LISTED
AND PAGINATED, BUT NO CROSS-REFERENCES
ARE CREATED. THIS IS LIKE :@ IN TECO.
THIS SWITCH IS EQUIVALENT TO "/L[RANDOM]".
* @ THIS FILE IS A LISTING RECORD FILE FOR
COMPARISON LISTINGS.
A ARBITRARILY LONG SYMBOLS SHOULD BE
KEPT BY @; THIS IS THE DEFAULT FOR LISP
CODE. IF OFF (-A, THE DEFAULT FOR MIDAS
AND OTHER ASSEMBLY CODE), THEN ONLY THE
FIRST SIX CHARACTERS ARE RETAINED AND USED.
C KEEP TRACK OF ALL REFERENCES AND PRINT
A CREF AT THE END OF THE LAST FILE OUTPUT.
"/-C" SAYS THERE SHOULD BE NO CREF.
C[<FILE>]
IS THE SAME AS "CU[<FILE>]" - IT SPECIFIES THE
AUXILIARY OUTPUT FILE AND REQUESTS A CREF.
/-C IN A LATER LISTING WOULD SPURESS THE CREF.
IF THIS MEANS TAHT THERE IS NO NO-FILE-SPECIFIC
OUTPUT, NO AUXILIARY OUTPUT FILE WILL BE WRITTEN,
BUT @ WILL NOT FORGET THAT YOU WANT NON-FILE-SPECIFIC
OUTPUT TO GO IN ONE. TO MAKE SUCH OUTPUT GO IN THE
USUAL PLACE, USE /U[NONE:].
D WHEN A REFERENCE IS MADE TO ANOTHER FILE
IN THE LEFT MARGIN, USE ONLY THE FIRST TWO
CHARACTERS OF THE FIRST FILE NAME INSTEAD
OF THE WHOLE FILE NAME. THIS REDUCES THE
WIDTH GOBBLED UP BY THE CROSS-REFERENCE DATA
AT SOME COST OF READABILITY.
F IS A DUAL PURPOSE SWITCH. <N>F SIMPLY SETS
THE NUMBER OF FONTS TO BE USED, WHILE
F[<FONT1>,<FONT2>,<FONT3>] SETS THE NAMES OF
FONTS AS WELL.
F[<FONT1>,<FONT2>,<FONT3>]
TELLS @ THAT THE SEPCIFIED FONTS ARE TO BE USED.
IF ONE OF THE FONT NAMES IS NULL, IT IS CONSIDERED
NOT SPECIFIED. THERE NEED NOT ACTUALLY BE THREE
FONTS NAMED; ONLY AS MANY AS IT IS DESIRED TO SPECIFY.
THUS, "F[,20FR]" SPECIFIES ONLY FONT 2 (USED FOR
THE REFERENCES). A FONT SPEC IS REALLY A FILE SPEC;
THE DEFAULTS ARE APPROPRIATE FOR THE SYSTEM YOU ARE
USING (ON ITS, DSK:FONTS; KST). FONTS SPECIFIED WILL
BE REMEMBERED IN AN LREC FILE.
<N>F USE THE SPECIFIED NUMBER OF FONTS ON OUTPUT.
IMPLIES THE X SWITCH (XGP). IF TWO FONTS,
THEN REFERENCE DATA USES THE FIRST FONT AND
TEXT THE SECOND FONT. FOR THREE FONTS,
COMMENTS USE THE THIRD FONT, WHERE A COMMENT
IS TEXT ON A LINE FOLLOWING A SEMICOLON
PRECEDED BY TABS OR SPACES ... MAYBE.
* G LIKE "@", BUT CAUSES THE SWITCH SETTINGS
REMEMBERED IN THE INPUT LREC FILE TO BE USED
AS THE DEFAULTS FOR ALL GLOBAL SWITCHES NOT
SPECIFIED BY THE USER,
AND CAUSES ALL THE FILES MENTIONED IN
THE INPUT LREC FILE (THAT IS, ALL THE FILES
WHICH WERE KNOWN TO THE @ PROGRAM WHEN THE LREC
FILE WAS WRITTEN) TO BE SCANNED OR LISTED.
OF COURSE, THE MOST RECENT VERSIONS OF THOSE FILES ARE
USED, RATHER THAN THE VERSIONS REMEMBERED IN THE LREC FILE.
THESE FILES WILL HAVE THE SAME
PER-FILE SWITCH SETTINGS AS THEY DID WHEN THE
LREC FILE WAS PRODUCED, EXCEPT THAT IF ANY OF
THE FILES IS EXPLICITLY SPECIFIED (IN THE
COMMAND LINE) THE EXPLICITLY SPECIFIED PER-FILE
SWITCH SETTINGS OVERRIDE THOSE BROUGHT FROM THE
LREC FILE. FILES INHIBITED WITH '' WHEN THE LREC
FILE WAS MADE WILL ALSO BE INHIBITED WHEN THAT
LREC FILE /G'D (UNLESS THEY ARE EXPLICITLY SPECD
IN THE COMMAND LINE NOT TO BE INHIBITED).
BECAUSE THE ABILITY TO USE THE REMEBERED SWITCH
SETTINGS AND FILES IS VALUABLE BY ITSELF, /-G HAS
THE MEANING, "USE THE REMEMBERED SWITCH SETTINGS
AND FILE NAMES, BUT MAKE A FULL LISTING RATHER
THAN A COMPARISON LISTING".
H ON => OUTPUT ↑H AS REAL BACKSPACE, CAUSING OVERPRINTING.
OFF => OUTPUT AS UPARROW-H
(FOR XGP, IF "↑" SWITCH IS GIVEN, OUTPUT AS A QUOTED CONTROL-H)
I ALL .INSRT'D FILES (UNLESS INDIVIDUALLY
INHIBITED) SHOULD BE LISTED. DEFAULT IS TO
USE THEM ONLY FOR THE SYMBOL DEFINITIONS
THEY CONTAIN. FOR LISP CODE, THE INCLUDE
FUNCTION SPECIFIES INSERTED FILES FOR THIS PURPOSE.
* J CONTROLS THE AMOUNT OF REPRINTING OF UNALTERED PAGES.
/J CAUSES A NEW FULL LISTING TO BE MADE OF THE FILE(S)
IT IS SPECIFIED FOR. /-J CAUSES REPRINTING TO BE DONE
WHEN PAGES ARE INSERTED OR DELETED, TO WHATEVER EXTENT
IS NECESSARY TO AVOID CREATING PAGE NUMBERS LIKE 5/1,
OR LEAVING ANY GAPS. NEITHER FORM OF /J IS REMEMBERED
IN THE LREC FILE. TO COUNTERMAND THEM, USE /0J.
K CAUSES SOS LINE NUMBERS TO BE LISTED AS IF PART OF THE
TEXT OF THE FILE. NORMALLY, THY ARE IGNORED.
L IS USED TO SPECIFY THE SOURCE LANGUAGE OF
THE FILES BEING LISTED, TELLING @ HOW TO FIND
SYMBOL DEFINITIONS, ETC. THE "L" SHOULD BE
FOLLOWED BY THE NAME OF THE LANGUAGE, ENCLOSED
IN SQUARE-BRACKETS. THERE SHOULD BE NO SPACES
BETWEEN THE "L" AND THE OPEN-BRACKET.
THE LANGUAGE NAME MAY BE ABBREVIATED.
LANGUAGES CURRENTLY KNOWN TO @ ARE "MIDAS",
"MACRO-10", "PALX11", "FAIL", "LISP", "RANDOM"
(WHICH MEANS THAT THE FILE IS INTENDED ONLY FOR
HUMAN CONSUMPTION), AND "TEXT" (WHICH MEANS THAT THE
FILE IS A DOCUMENT OUTPUT BY A TEXT JUSTIFIER).
HOWEVER, "MIDAS" IS THE DEFAULT AND NEED NOT
BE MENTIONED.
THUS, "(L[FAIL] X)" SPECIFIES FAIL CODE BEING
LISTED FOR THE XGP.
* M IDENTIFIES THE FILE IT IS SPEC'D WITH AS THE "MAIN"
FILE. THIS MEANS THAT THE LREC FILE VERSION NUMBER
IS SYNCHRONIZED TO THIS FILE'S VERSION NUMBER.
IN MORE DETAIL, IF AN LREC FILE IS WRITTEN, ITS
DEFAULT FN2 IS THE REAL FN2 OF THE "MAIN" FILE.
FOR THIS TO BE REASONABLE, THE LREC FILE SHOULD
EITHER BE KEPT ON A DIFFERENT DIRECTORY FROM THE
"MAIN" INPUT FILE, OR SHOULD HAVE A DIFFERENT FN1.
IF NEITHER OF THOSE IS THE CASE, THE DEFAULT FN2
OF THE LREC FILE WILL BE LREC -- OTHERWISE, THE LREC
FILE WRITTEN WOULD OVERWRITE THE INPUT FILE!
IF YOU ARE USING THE /M FEATURE, YOU MIGHT ALSO WANT
TO USE /G WITH THE LREC FILE - THAT WILL MAKE THE
DEFAULT INPUT FN2 ">", WHICH IS JUST RIGHT.
N OMIT THE CROSS-REFERENCE DATA ON THE LEFT
MARGIN (BUT STILL PRODUCE A SYMBOL TABLE AND
CREF IF APPROPRIATE).
O MEANS FILES ARE OLD. THIS IS USED FOR
CREATING LREC FILES FOR YOUR OLD FILES WITHOUT
LISTING THEM, SO THAT YOU CAN MAKE COMPARISON
LISTINGS OF THE NEW ONES (THIS IS IN CASE
YOU DIDN'T MAKE AN LREC FILE THE LAST TIME YOU
LISTED THEM). THE RESULTS ARE THE SAME AS IF
YOU SIMPLY DELETED ALL THE LISTING OUTPUT FILES,
BUT /O IS MORE EFFICIENT. /O IS NOT REMEMBERED
IN THE WRITTEN LREC FILE.
* <N>P THE PAGE NUMBER OF THE FIRST PAGE TO BE LISTED.
(DEFAULT 1.) USEFUL FOR RESTARTING TPL
LISTINGS LOST IN A CRASH.
Q A QOPYRIGHT MESSAGE IS PRINTED AT THE BOTTOM
OF EACH PAGE. THE DEFAULT MESSAGE IS: "(c) Copyright
1974 Massachusetts Institute of Technology.
All rights Reserved." EXCEPT THAT THE CORRECT
YEAR IS SUBSTITUTED. A DIFFERENT MESSAGE MAY
BE SPECIFIED BY USING []: /Q[This is a message].
[] MAY BE USED IN THE MESSAGE IF THEY ARE BALANCED,
OR IF QUOTED BY ↑Q.
R OFF => ONLY <CRLF> COUNTS AS A LINE-SEPARATOR.
STRAY CR'S AND LF'S WILL APPEAR IN THE LISTING
AS UPARROW-M AND UPARROW-J, EXCEPT THAT IN XGP LISTINGS
IF THE "↑" SWITCH IS SET THEY WILL COME OUT AS
QUOTED CONTROL-M'S AND CONTROL-J'S.
ON => ALL LF'S COUNT AS LINE-SEPARATORS;
STRAY CR'S CAUSE OVERPRINTING.
S ONLY ONE SINGLE OUTPUT FILE SHOULD BE
CREATED, THE CONCATENATION OF ALL THE OUTPUT
FILES.
<N>S ALLOCATE SPACE FOR <N> SYMBOLS. SHOULD NEVER BE NEEDED
ON ITS.
T -T (THE DEFAULT) IF A LINE IS TOO LONG, INSERT CRLF'S.
1T (OR JUST T) => TRUNCATE LONG TEXT LINES TO FIT THE LINEL.
0T => LET THEM RUN OVER.
(TABLES PRODUCED BY @ ALWAYS STAY WITHIN
THE LINEL BY DESIGN.)
<N>U UNIVERSAL SYMBOL TABLES. IF <N> IS NEGATIVE,
EACH FILE'S SYMBOL TABLE WILL BE A UNIVERSAL ONE
(WILL LIST ALL SYMBOLS IN ALL FILES). IF <N> IS
0 (THE DEFAULT CASE), EACH FILE'S SYMBOL TABLE
WILL BE NORMAL (LIST ONLY THAT FILE'S SYMBOLS).
IF <N> IS POSITIVE, THE FILES' SYMBOL TABLES
WILL BE NORMAL, BUT THERE WILL BE <N> EXTRA
UNIVERSAL SYMBOL TABLES PRINTED. THEY WILL GO IN
THE AUXILIARY OUTPUT FILE IF THERE IS ONE;
OTHERWISE, AT THE END OF ONE OF THE LISTING FILES.
U[<FILE>]
SPECIFIES THE NAME OF THE AUXILIARY OUTPUT FILE,
AND THAT THERE SHOULD BE ONE.
THE AUXILIARY OUTPUT FILE IS USED TO HOLD ALL OUTPUT
NOT ASSOCIATED WITH ANY PARTICULAR INPUT FILE.
THIS NOW MEANS CREFS AND UNIVERSAL SYMBOL TABLES.
NAMES NOT SPECIFIED IN THE FILESPEC INSIDE THE /U
DEFAULT AS THEY WOULD FOR OTHER LISTING OUTPUT FILES
(BASED ON THE /O SPECIFICATION, IF ANY, OR TO
<LAST DATA FILE> @CREF ON YOUR WORKING DIRECTORY).
IF LREC FILES AND /G ARE IN USE, NOTE THAT THE
UNSPECIFIED NAMES WILL BE RE-DEFAULTED EACH TIME
A LISTING IS MADE; IF THE DEVICE AND SNAME ARE
UNSPECIFIED THEN IN EACH LISTING THE AUXILIARY
OUTPUT FILE WILL GO ON THE SAME DIRECTORY AS THE
OTHER OUTPUT FILES.
U[NONE:]
SPECIFIES THAT THERE BE NO AUXILIARY OUTPUT FILE.
WHAT WOULD NORMALLY GO IN IT, GOES AT THE END OF
ONE OF THE REGULAR OUTPUT FILES.
<N>U[<FILE>]
COMBINES THE TWO FUNCTIONS OF THE "U" SWITCH.
V IS A MULTI-PURPOSE SWITCH, WHICH CAN SET EITHER THE
PAGE HEIGHT OR THE VSP. GIVEN ANY REASONABLE PAGE
HEIGHT (>45 OR SO) THE PAGE HEIGHT IS SET. GIVEN A
REASONABLE VSP (<= 15) THE VSP IS SET.
GIVEN A NEGATIVE ARGUMENT,
THE VSP IS SET TO ITS ABSOLUTE VALUE.
THE DEFAULT VSP IS 4 (OR WHATEVER COMES FROM AN
LREC FILE). THE DEFAULT PAGE HEIGHT IS MORE
COMPLICATED. IF FONTS AND VSP HAVE NOT BEEN
SPECIFIED, EITHER IN THE COMMAND OR FROM AN
LREC FILE, THE DEFAULT IS 60. IF FONTS OR VSP
HAVE BEEN SPECIFIED, THE DEFAULT IS THE RIGHT
NUMBER OF LINES OF THAT FONT TO FIT ON A
NORMAL 11 INCH XGP PAGE WITH NORMAL MARGINS.
<N>W SET PAGE WIDTH. THE DEFAULT FOR NON-XGP LISTINGS
IS 120. FOR XGP LISTINGS THE DEFAULT IS 89. IF
FONTS HAVE NOT BEEN SPECIFIED. IF FONTS HAVE
BEEN SPECIFIED, THE DEFAULT IS THE NUMBER OF
CHARACTERS OF THE WIDEST FONT, THAT WILL FIT
IN AN 8.5 INCH XGP LINE, WITH NORMAL MARGINS.
X XGP OUTPUT (ALSO IMPLIED BY F SWITCH).
X[QUEUE] DO QUEUE THE OUTPUT FILES FOR THE XGP (THIS
IS THE DEFAULT, BUT IT ONLY WORKS ON ITS).
X[NO] DO NOT QUEUE THE OUTPUT FILES FOR THE XGP.
YOU MUST QUEUE THEM BY HAND LATER.
Z A TABLE OF CONTENTS SHOULD BE PRINTED, USING
SUBTITLES FROM THE VARIOUS SUBTITLE PSEUDO-OP'S.
↑ ON => CONTROL CHARS ARE OUTPUT AS THEMSELVES
(ON XGP, THEY ARE XGP-QUOTED IF NECESSARY)
OFF => CONTROL CHARS OUTPUT AS UPARROW-
<CHAR+100 ASCII>
WHEN THE LANGUAGE FAIL IS SELECTED, THIS SWITCH
DEFAULTS ON; OTHERWISE, OFF.
EXAMPLES:
[1] TO LIST A MIDAS PROGRAM ON TPL AND GET A CREF:
:@ LOSER;MY PROG/C OR :@ LOSER;MY PROG(C)
NOTE THAT SINCE NO "←" HAS APPEARED, TPL: IS USED AS
THE OUTPUT DEVICE RATHER THAN DSK:
[1A] TO PUT THE OUTPUT ON DSK: INSTEAD:
:@ ←LOSER;MY PROG/C
PUTS THE OUTPUT IN DSK:<MSNAME>;MY @. DSK: IS USED
BECAUSE IT IS THE DEFAULT, AND THE SPECIAL CROCK THAT
USES TPL: INSTEAD IS SUPPRESSED BY THE PRESENCE OF THE "←".
[2] TO LIST A MIDAS PROGRAM "FOO >" ON THE XGP IN TWO FONTS,
AND LIST ALL .INSRT'D FILES AS WELL:
:@ LOSER;FOO (2F I)
[3] TO LIST "FOO BAR", AND JUST REFERENCE SYMBOLS IN BUT
NOT LIST "QUUX BAZ":
:@ FOO BAR,'QUUX BAZ
[4] TO LIST "ITS >" AND LIST ALL .INSRT'D FILES, BUT NOT
"TS2TTY >" BECAUSE IT IS OBSOLETED BY "TS3TTY >":
:@ SYSENG;ITS,''TS2TTY(I)
[5] THIS IS HOW ITS WOULD BE LISTED NOW,
IF ALL OLD LREC FILES DISAPPEARED:
:@ SYSENG;ITS(F[20FG] I $ 1U[ITS]),SYSLRC;ITS←'(@ -$)
SYSENG;ITS > AND ALL .INSRT'ED FILES ARE LISTED FOR THE XGP WITH
FONT 20FG. ITS HAS NO SYMBOL TABLE, BUT EVERY OTHER FILE HAS ONE
(BECAUSE THE -$ IN THE LREC FILE SPEC SETS THE DEFAULT FOR
.INSRT'ED FILES). ALSO, A UNIVERSAL SYMBOL TABLE IS PUT IN A
FILE NAMED ITS @CREF ON THE SAME DIRECTORY AS THE LISTING FILES.
[6] SUPPOSE FOO DOES A .INSRT OF BAR, BAZ, AND QUUX.
TO LIST JUST BAZ, BUT SEE REFERENCES TO THE OTHER FILES:
:@ 'FOO,BAZ
THIS CAUSES FOO TO BE INPUT-ONLY. ALL .INSRT'ED FILES ARE
INPUT-ONLY BY DEFAULT, SINCE THERE IS NO /I SWITCH, EXCEPT
FOR BAZ, WHICH IS LISTED BECAUSE IT IS MENTIONED EXPLICITLY
IN SUCH A WAY AS TO SAY THAT IT SHOULD BE LISTED.
[7] SAME SITUATION, BUT TO LIST ALL EXCEPT BAZ:
:@ FOO/I,'BAZ
THIS EXPLICITLY MAKES BAZ INPUT-ONLY. ANY OTHER .INSRT'ED
FILES WILL BE LISTED, BECAUSE OF THE /I SWITCH.
HOW TO USE THE XGP FEATURES:
ON THE LOWEST LEVEL, SIMPLY SPECIFYING /X WILL CAUSE @ TO DO THE
MINIMUM NECESSARY TO MAKE A FILE WHICH CAN BE PRINTED PROPERLY
ON THE XGP. IT WILL ALSO DO A FEW NICE THINGS SUCH AS PRINT
ONLY ONE TITLE PAGE.
THE DEFAULT LINEL AND PAGEL WILL BE RIGHT FOR THE XGP'S DEFAULT
FONT, 25FG, BUT THEY CAN BE SET WITH /W AND /V.
ON A HIGHER LEVEL, YOU CAN TELL @ WHICH FONT YOU PREFER, AND @
WILL AUTOMATICALLY CAUSE THE XGP TO USE THAT FONT. @ WILL ALSO
FIGURE OUT HOW BIG A PAGE AND LINE ARE IN THAT FONT. JUST SAY,
FOR EXAMPLE, "/F[20FG]" OR "/F[FONTS;20FG KST]" TO SPECIFY FONT
20FG. THE VSP CAN ALSO BE SPECIFIED, AS IN /6V (THE DEFAULT IS
4, WHICH IS GOOD WITH 20FG, WHICH IS THE FONT I PREFER).
@ HAS THE ABILITY TO CAUSE PARTS OF THE LISTING TO COME OUT IN
DIFFERENT FONTS. NORMALLY, EVERYTHING IS IN FONT 0, BUT THE
SWITCH "/2F" CAUSES THE ACTUAL TEXT OF THE FILE TO APPEAR IN
FONT 1 (CROSS -REFS, LINE AND PAGE NUMBERS, THE TITLE PAGE, ETC.
ARE STILL IN FONT 0). "/3F" CAUSES COMMENTS IN THE TEXT TO
APPEAR IN FONT 3. YOU DO NOT NEED TO SPECIFY /2F IF YOU HAVE
SPECIFIED THE NAME OF THE SECOND FONT, NOR /3F IF YOU HAVE
SPECIFIED THE NAME OF THE THIRD FONT.
HOW TO MAKE COMPARISON LISTINGS, USING THE OLD NAMING SCHEME
FOR LREC FILES:
(IN THE OLD NAMING SCHEME, THE LREC FILE FOR THE MOST RECENT
LISTING OF "FOO >" IS CALLED "FOO LREC"; THE LREC FILE OF THE
PREVIOUS LISTING IS CALLED "FOO OLREC"; EARLIER LREC FILES DO
NOT STAY AROUND).
[1] TO MAKE THE FIRST, FULL, LISTING, AND MAKE AN LREC FILE SO
THAT THE NEXT VERSION CAN BE COMPARISON-LISTED, DO
:@ FOO >,FOO LREC←'/@
OR
:@ FOO,←'/@
OTHER SWITCHES MAY BE INCLUDED; THEY WILL BE REMEMBERED IN THE
LREC FILE. IT IS PERMISSABLE TO PUT THE LREC FILE ON A DIFFERENT
DIRECTORY - JUST SPECIFY THE DIRECTORY NAME IN THE LREC FILE SPEC.
[2] TO MAKE A COMPARISON LISTING OF A LATER VERSION, DO
:@ FOO/G
THIS TELLS @ TO LOOK AT FOO LREC AND DETERMINE FROM IT WHICH
FILES TO LIST, AND WHAT SWITCH SETTINGS TO USE. IN ADDITION, THE
FILES LISTED ARE COMPARED AGAINST THE INFORMATION ABOUT THE
PREVIOUS LISTING, WHICH IS ALSO REMEMBERED IN FOO LREC.
A NEW LREC FILE IS WRITTEN OUT, AS FOO LREC, AND THE OLD
FOO LREC IS RENAMED FOO OLREC.
ANY GIVEN SWITCH SETTING MAY BE OVERRIDDEN BY EXPLICITLY
SPECIFYING IT ONE WAY OR THE OTHER IN THE COMMAND STRING. ALL
OTHER SWITCHES NOT EXPLICITLY SET WILL STILL BE REMEMBERED FROM
THE LREC FILE. IN ADDITION, BY EXPLICITLY SPECIFYING FILES WITH
ZERO, ONE OR TWO SINGLE-QUOTES THE SET OF FILES TO BE USED OR
LISTED MAY BE CHANGED, BUT AGAIN, ANY FILE NOT MENTIONED WILL BE
TREATED AS THE LREC FILE SAYS.
[3] EVERY SO OFTEN, IT IS GOOD TO MAKE A NEW FULL LISTING.
THAT IS BECAUSE A COMPARISON LISTING ISN'T A PERFECT UPDATE - IT
DOES NOT UPDATE CROSS REFERENCES ON UNCHANGED PAGES (THOUGH THIS
IS A MINOR PROBLEM), AND IT CAN LEAD TO GROSSNESS WHEN MANY
NEW PAGES ARE INSERTED (SUCH AS HAVING PAGE 25 CALLED PAGE 5/20
BECAUSE 20 PAGES WERE INSERTED BEFORE WHAT HAD ORIGINALLY BEEN
PAGE 6).
THIS COULD BE DONE BY STARTING FROM SCRATCH AS IN [1], BUT THAT
WOULD REQQUIRE RE-SPECIFYING ALL SWITCHES AND FILES. A BETTER
WAY IS THIS:
:@ FOO/-G
THIS USES FOO LREC TO GET THE FILE NAMES AND SWITCHES, BUT MAKES
FULL LISTINGS RATHER THAN COMPARISON LISTINGS.
[4] IF YOU MADE A LISTING AND FORGOT TO MAKE AN LREC FILE,
YOU CAN SOMETIMES MAKE UP FOR THAT.
A) IF THE LAST LISTING WAS A FULL LISTING, JUST DO
:@ FOO 69,FOO LREC←'/@/O
THE /O CAUSES @ TO SAVE TIME BY NOT MAKING A LISTING OF
FOO 69 - IT JUST MAKES THE LREC FILE IT WOULD MAKE IF IT
WERE MAKING SUCH A LISTING.
B) IF THE LAST LISTING WAS A COMPARISON LISTING, AND YOU CAN
FIND THE PREVIOUS LISTING'S LREC FILE, JUST DO
:@ FOO OLR68/G,FOO 69/O
IF THE NEW VERSION OF FOO IS 70, AND THE LAST LISTED
VERSION WAS FOO 69, THEN FOO OLR68 SHOULD BE THE LREC FILE
WRITTEN WHEN, SAY, FOO 68 WAS LISTED. SINCE /G WOULD
NORMALLY CAUSE FOO > TO BE LISTED, AND WE WANT TO MAKE AN
LREC FOR FOO 69, WE MUST SPECIFY THE FILENAME EXPLICITLY.
NOTE THAT ALTHOUGH THE LREC INPUT NAMES ARE SPECIFIED
EXPLICITLY, THE OUTPUT NAMES ARE DEFAULETD TO FOO LREC.
AFTER DOING A) OR B), WE COULD GO ON TO LIST FOO 70 AS IN [2].
C) SUPPOSE THINGS ARE AS IN B) EXCEPT THAT FOO 69 HAS BEEN
DELETED. THEN WE CAN'T PROCEED AS IN B). WHAT CAN BE DONE?
:@ FOO OLR68/G
THIS WILL LIST FOO 70 AGAINST FOO 68. WE WILL GET SOME
EXTRA PAGES PRINTED - THOSE CHANGED BETWEEN 68 AND 69 AND
NOT CHANGED BETWEEN 69 AND 70 - BUT WE WON'T BE SCREWED.
THE ALTERNATE NAMING SCHEME FOR LREC FILES:
(IN THIS SCHEME, THE LREC FILE FOR SYSENG;DDT <NNN> IS CALLED
SYSLRC;DDT <NNN>, SO ANY NUMBER OF BACKUP LREC FILES MAY BE
KEPT AND IT IS CLEAR WHICH LISTING VERSIONS THEY BELONG TO.
THE SNAME AND FN1 OF THE LREC FILE MAY BE CHOSEN ARBITRARILY
BUT SHOULD NOT BE THE SAME AS THE SOURCE FILE'S).
[1] TO MAKE THE INITIAL LISTING, AND START USING THE ALTERNATE
NAMING SCHEME, JUST DO
:@ FOO/M,FOOLRC←'/@
THE ONLY DIFFERENCE BETWEEN THIS AND THE METHID FOR THE OLD
NAMING SCHEME IS THE "/M", WHICH BOTH SELECTS THE ALTERNATE
NAMING SCHEME AND IDENTIFIES THE FILE FOO AS THE ONE WHOSE
VERSION NUMBER SHOULD BE USED IN THE LREC FILE. THUS, IF THE
VERSION OF FOO BEING LISTED IS "FOO 70", THE LREC FILE WILL BE
CALLED "FOOLRC 70".
IF MORE THAN ONE FILE IS BEING LISTED, THE /M SHOULD GO WITH THE
FILE WHICH IS MOST CERTAIN TO CHANGE EVERY LISTING. IT WILL BE
THAT FILE WHOSE FN2 IS USED AS THE LREC FILE'S FN2 EACH TIME.
HOWEVER, THE ALTERNATE NAMING SCHEME ISN'T AS WINNING IF THERE
ARE MORE THAN ONE FILE BEING LISTED.
[2] LISTINGE THE NEXT VERSION IS JUST THE SAME AS BEFORE,
BECAUSE THE /G USES THE /M WHICH WAS REMEMBERED IN THE LREC FILE.
[3] DITTO.
[4] BECOMES
A) :@ FOO 69/M/O,FOOLRC←'/@
B) :@ FOOLRC 68/G/O,FOO 69
C) :@ FOOLRC 68/G
HOW DO YOU SWITCH BETWEEN THE NAMING SCHEMES?
IF THE OUTPUT LREC FILE NAMES ARE EXPLICITLY SPECIFIED THEY
DON'T COME INTO PLAY AT ALL:
:@ FOO LREC←FOOLRC >/G
HOWEVER, THE LREC FILES WILL STILL REMEMBER WHICH SCHEME TO USE
IF YOU EVER FAIL TO DO THIS. TO CHANGE THAT MEMORY, USE /M:
:@ FOOLRC←FOO LREC/G,FOO/M
WILL SWITCH FROM THE OLD SCHEME TO THE ALTERNATE, AND
:@ FOO←FOOLRC/G/-M
WILL SWITCH FROM THE ALTERNATE SCHEME TO THE OLD ONE.
WHAT TO DO WHEN YOU CHANGE THE NAMES OF THE FILES REMEMBERED
IN YOUR LREC FILE:
Sometimes, you will change the name of one of the files of a
program, or move it to a different directory. When this happens,
you must make sure, when you next list the program, that @ obtains
that part of the program from the right place.
On ITS, the easiest way to do this is to make a link from the old
name to the new name. Thus, if SYSENG;FOO > has been moved to
SYSTEM;, make a link SYSENG;FOO > to SYSTEM;FOO >. The next listing
will obtain the correct file through the link, and in the new LREC
file the new names SYSTEM;FOO > will be rememebered. Subsequent
listings will use SYSTEM; even if the link is deleted. If it is
not convenient to use a link, a translation (see the ↑T and $↑T
DDT commands) will do just as well.
If you are moving a file to a new directory, but not changing
the first filename, then you can simply specify the file explicitly,
with its new names, in the next listing. Because of the matching
first names, @ will assume that the specified file is the same
one as mentioned in the lrec file, on a new directory. However,
it is necessary to respecify all the per-file switches that you want.
If all else fails, you can specify the new name of the file explicitly,
and specify the old names with two single-quotes to make @ ignore it.
On a DEC system, this is probably the only alternative.
Unfortunately, it will always make a new full listing of the file
that was moved.
Tips on Programming Style
A few simple precautions can make @'s left-margin cross references
more informative.
@ assumes that a semicolon starts a comment, but only when it follows
a space or tab (or at the beginning of a line). So make sure that
your comments will be recognized.
@ doesn't expand macros, so symbol definitions in macros will not be
understood unless you take precautions to make them visible.
One thing you can do is supply the "=" or ":" to be used in defining
the symbol as part of the argument to the macro; then the macro call
will appear to contain a definition of the symbol. The macro itself
can strip off the ":" with an IRPS or IRPNC if necessary. Symbols
being defined in an IRPS can be delimited with any character, so
use ":". Another principle is that macros should not supply a
prefix for the symbol to be defined; if you want a common prefix, put
it with the symbol name in the macro call (of course, if the symbol
is only referred to from macros that add on the same prefix, you can
still win; @ will see the definitions and the uses without the prefix
and correctly match them up). If you are generating lots of symbols,
you may be quite happy that they are not seen by @.
@ considers symbols defined on page 1 of a file, or the current page,
to be less interesting than other symbols. Also, symbols defined with
"=" or equivalents are less interesting than those defined in other
ways. Given a choice of symbols for a left-margin cross-reference,
@ will use the most interesting one. So, for example, you should
put your accumulator definitions on page 1.
Often, people use a short name like "A" as a dummy in a macro or IRP,
sometimes representing a symbol which is to be defined. When this
happens, @ sees a definition of the symbol "A". If "A" is also an
accumulator, this will cause a more confusing listing, so make sure
that you do not use accumulator names as dummies.
All in all, you can't expect @ perform perfectly in its search for
symbols, but luckily you are not screwed very badly when it fails.
ββ